当我们需要处理的数据源本身是异步产生的时候(例如,从一个流式API接收数据块),就需要使用 async for

一个对象若要支持 async for,它必须实现 __aiter____anext__ 方法,这被称为异步迭代器

async def 配合 yield 可以方便地创建异步生成器,这是一种简单的异步迭代器实现。

Python

async def async_counter(limit):
    for i in range(limit):
        await asyncio.sleep(0.1) # 模拟异步操作
        yield i

async def main():
    # 每次循环,都会等待 async_counter 异步地产生下一个值
    async for number in async_counter(5):
        print(number)

相关链接: